home *** CD-ROM | disk | FTP | other *** search
/ Languguage OS 2 / Languguage OS II Version 10-94 (Knowledge Media)(1994).ISO / gnu / oleo-1_4.lha / oleo-1.4 / defuns.h < prev    next >
C/C++ Source or Header  |  1993-03-30  |  2KB  |  121 lines

  1.  
  2. /* This file repeatedly includes tahe contents of defun.h which contains
  3.  * doc strings and FUNC_ARGS structures for all of the interactive
  4.  * built-ins.
  5.  * 
  6.  * It uses ugly preprocessor magic to build various tables.
  7.  */
  8.  
  9.  
  10. /* First, build arrays containing FUNC_ARG strings. */
  11.  
  12. #define DEFUN_5(Sname, FDname, FAname, DFname, Cname) \
  13. 0, \
  14. }; \
  15. \
  16. static char * FAname [] = \
  17. {
  18.  
  19. #define DEFUN(Sname, FDname, FAname, Cname) \
  20.     DEFUN_5(Sname, FDname, FAname, 0, Cname)
  21.  
  22. #define DEFUN_3(Sname, FDname, Cname)
  23.  
  24. #define FUNC_ARG_STRINGS    1
  25.  
  26. static char * FAfnord[] = 
  27. {
  28. #include "defun.h"
  29. 0,
  30. };
  31.  
  32.  
  33.  
  34. /* Docstrings */
  35.  
  36. #undef DEFUN
  37. #undef DEFUN_3
  38. #undef DEFUN_5
  39. #undef FUNC_ARG_STRINGS
  40. #undef DOC_STRINGS
  41. #undef FUNC_INIT_CODE
  42.  
  43. #define DEFUN_5(Sname, FDname, FAname, DFname, Cname) \
  44. 0, \
  45. }; \
  46. \
  47. static char * FDname [] = \
  48. {
  49.  
  50. #define DEFUN(Sname, FDname, FAname, Cname) \
  51.     DEFUN_5(Sname, FDname, FAname, 0, Cname)
  52. #define DEFUN_3(Sname, FDname, Cname) DEFUN(Sname, FDname, 0, Cname)
  53.  
  54. #define DOC_STRINGS    1
  55.  
  56. static char * FDfnord[] = 
  57. {
  58.   "Well, you know.",
  59. #include "defun.h"
  60. 0,
  61. };
  62.  
  63.  
  64.  
  65.  
  66. /* init_code */
  67.  
  68. #undef DEFUN
  69. #undef DEFUN_3
  70. #undef DEFUN_5
  71. #undef FUNC_ARG_STRINGS
  72. #undef DOC_STRINGS
  73. #undef FUNC_INIT_CODE
  74.  
  75. #define DEFUN_5(Sname, FDname, FAname, DFname, Cname) \
  76. 0, \
  77. }; \
  78. \
  79. static char * DFname [] = \
  80. {
  81.  
  82. #define DEFUN(Sname, FDname, FAname, Cname)
  83. #define DEFUN_3(Sname, FDname, Cname) 
  84.  
  85. #define FUNC_INIT_CODE    1
  86.  
  87. static char * DFfnord[] = 
  88. {
  89. #include "defun.h"
  90. 0,
  91. };
  92.  
  93.  
  94.  
  95.  
  96.  
  97. /* Building the function table. */
  98.  
  99. #undef DEFUN
  100. #undef DEFUN_3
  101. #undef DEFUN_5
  102. #undef FUNC_ARG_STRINGS
  103. #undef DOC_STRINGS
  104. #undef FUNC_INIT_CODE
  105.  
  106. #define DEFUN_5(Sname, FDname, FAname, DFname, Cname) \
  107.     { Sname, FDname, FAname, DFname, Cname },
  108.  
  109. #define DEFUN(Sname, FDname, FAname, Cname) \
  110.     DEFUN_5(Sname, FDname, FAname, 0, Cname)
  111. #define DEFUN_3(Sname, FDname, Cname) \
  112.     DEFUN_5(Sname, FDname, 0, 0, Cname)
  113.  
  114. struct cmd_func cmd_funcs[] =
  115. {
  116.   { "fnord", FDfnord, FAfnord, DFfnord, fnord },
  117. #include "defun.h"
  118.   { 0, 0, 0, 0, 0 }
  119. };
  120.  
  121.